package observer.main;

import java.util.ArrayList;
import java.util.List;

/**
 * 销售管理系统
 * observer.main
 * 气象站 主题
 * 2018/8/3-16:02
 * 科达科技股份有限公司-版权所有
 * Created by wuqiang on 16:02.
 */
public class WeatherData implements Subject{

    List<Observer> observerList=new ArrayList<Observer>();//观察者

    private Double temperature; //温度
    private Double humidity;//湿度
    private Double pressure;//压强
    /**
     * 注册一个 观察者
     *
     * @param o
     */
    public void registerObserver(Observer o) {
        observerList.add(o);
    }

    /**
     * 移除一个观察者
     *
     * @param o
     */
    public void removeObserver(Observer o) {
        int i = observerList.indexOf(o);
        if(i>0){
            observerList.remove(o);
        }
        System.out.println("没有需要移除的！"+o);
    }

    /**
     * 通知观察者
     */
    public void nodifyObserver() {
        for(Observer observer:observerList){
            observer.update(temperature,humidity,pressure);
        }
    }

    /**
     * 更新 数据
     * @param temperature
     * @param humidity
     * @param pressure
     */
    public void setMeasurements(Double temperature,Double humidity,Double pressure){
        //先更新自身数据
        this.temperature=temperature;
        this.humidity=humidity;
        this.pressure=pressure;
        //通知所有观察者
        nodifyObserver();
    }
}
